package com.ruoyi.common.xss;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义xss校验注解
 * 用于标记需要进行XSS攻击防护的字段或方法参数
 *
 * @author ruoyi
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Constraint(validatedBy = {XssValidator.class})
public @interface Xss {
    /**
     * 获取校验失败时的错误消息
     *
     * @return 错误消息字符串，默认为"不允许任何脚本运行"
     */
    String message()

            default "不允许任何脚本运行";

    /**
     * 获取校验分组信息
     *
     * @return 校验分组类数组，默认为空数组
     */
    Class<?>[] groups() default {};

    /**
     * 获取负载信息
     *
     * @return 负载信息类数组，默认为空数组
     */
    Class<? extends Payload>[] payload() default {};
}

